package databases;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;

import negocio.Conversa;
import negocio.UsuarioWeb;


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class MensagemDS {
	private SQLiteDatabase db;
	private String[] columns = {"_id", "texto","data","hora", "lida","_id_sender", "_id_target"};
	private String[] columns2 = {"texto"};
	private UsuarioWeb cadastro;
	private Helper helper;
	
	public MensagemDS(Context context)
	{
		helper = new Helper(context);
	}
	
	public void open() throws SQLException
	{
		db = helper.getWritableDatabase();
	}
	
	public void close()
	{
		db.close();
	}
	
	public ArrayList<Conversa> atualizaMensagem(ContentValues values){
		ArrayList<Conversa> conversas = new ArrayList<Conversa>();
		
		String retorno = buscaMensagens(values);
		
		ArrayList<String> retornoArr = new ArrayList<String>(Arrays.asList(retorno.split("<br/>")));
		
		for (String string : retornoArr) {
			String[] valores = string.split(";");
			Conversa conversa = new Conversa();
			conversa.set_id_sender(Integer.parseInt(valores[1]));
			conversa.set_id_target(Integer.parseInt(valores[2]));
			conversa.setMensagem(valores[0]);
			conversas.add(conversa);
		}
		
		return conversas;
	}
	
	
	public Conversa conversaDS(Conversa c)
	{

		ContentValues values = new ContentValues();
		values.put("_id_sender", c.get_id_sender());
		values.put("_id_target", c.get_id_target());
		values.put("texto", c.getMensagem());

		SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd");
		values.put("data", simpleFormat.format(new Date(System.currentTimeMillis())));
		simpleFormat = new SimpleDateFormat("HH:mm:ss");
		values.put("hora", simpleFormat.format(new Date(System.currentTimeMillis())));
		
		addMensagem(values);
		long insertId = db.insert("mensagem_local", null, values);
		
		return c;
	}
	
	
	private String addMensagem(ContentValues values){
		WebService ws = new WebService();
		
		return ws.executar("addMensagem.php?texto=" + values.get("texto").toString().replace(" ", "%20")
					+ "&data=" + values.get("data")
					+ "&hora=" + values.get("hora")
					+ "&sender=" + values.get("_id_sender")
					+ "&target=" + values.get("_id_target"));

	}
	
	private static String buscaMensagens(ContentValues values){
		WebService ws = new WebService();
		
		return ws.executar("getMensagem.php?sender=" + values.get("sender") 
				+ "&target=" + values.get("target"));
	}

	public ArrayList<Conversa> getAll(Integer target)
	{
		ArrayList<Conversa> conversaArrayList = new ArrayList<Conversa>();
		
		Cursor cursor = db.query("mensagem_local",columns2,"_id_target="+target, null, null, null, null);
		
		cursor.moveToFirst();
		while(!cursor.isAfterLast())
		{
			conversaArrayList.add(cursorToConversa(cursor));
			cursor.moveToNext();
		}
		
		cursor.close();
		return conversaArrayList;
	}
	
	private Conversa cursorToConversa(Cursor cursor)
	{
		Conversa conversa = new Conversa();
		
	
		conversa.setMensagem(cursor.getString(0));
		
		return conversa;
	}
}
